package com.tbit.uqbike.client.service;

import com.tbit.uqbike.client.pojo.VipCardLog;
import com.tbit.uqbike.client.pojo.vo.VipLogDot;

import java.util.List;

/**
 * @Author: chen
 * @Description: 会员卡购买
 * @Date: 创建于 9:20 2020/7/7
 */
public interface VipCardLogService {
    /**
     * 分页查询
     */
    List<VipLogDot> queryPage(Integer accountId, Integer userId, Integer pageNO, Integer rowCount);

    /**
     * 总数
     */
    Integer queryCount(Integer accountId, Integer userId);

    /**
     * 添加
     */
    void add(VipCardLog vipCardLog);

    /**
     * 通过订单号获取
     */
    VipCardLog getByOrderNO(String orderNO);

    /**
     * 修改已支付
     */
    void editPay(VipCardLog vipCardLog);

    /**
     * 查询用户购买的最新记录
     */
    List<VipCardLog> getById(Integer accountId, Integer userId);

    /**
     * 查询用户当前生效的会员卡
     */
    List<VipCardLog> getByTime(Integer accountId, Integer userId);

    /**
     * 根据区域id和用户id获取用户最近一笔生效会员卡
     *
     * @param accountId 区域id(非必传)
     * @param userId    用户id
     */
    VipCardLog getVipCardByUserId(Integer accountId, Integer userId);

    /**
     * 获取用户生效会员卡
     *
     * @param userId
     * @return
     */
    VipLogDot getVaild(Integer accountId, Integer userId, Integer feeId);

    /**
     * 获取用户购买所有生效中会员卡
     *
     * @param accountId
     * @param userId
     * @param feeId
     * @return
     */
    VipLogDot getUserVip(Integer accountId, Integer userId, Integer feeId);

    /**
     * 查询用户快到期会员卡订单
     *
     * @param startTime
     * @param endTime
     * @return
     */
    List<VipLogDot> getUserRide(Integer accountId, String startTime, String endTime);

    /**
     * 判断当前用户是否存在生效中的会员卡
     *
     * @param userId
     * @return
     */
    boolean hasValidVipCard(Integer userId);
}
